package com.tpc.control.jpa;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * Interface for ReserveItemLabDAO.
 * 
 * @author MyEclipse Persistence Tools
 */

public interface IReserveItemLabDAO {
	/**
	 * Perform an initial save of a previously unsaved ReserveItemLab entity.
	 * All subsequent persist actions of this entity should use the #update()
	 * method. This operation must be performed within the a database
	 * transaction context for the entity's data to be permanently saved to the
	 * persistence store, i.e., database. This method uses the
	 * {@link javax.persistence.EntityManager#persist(Object)
	 * EntityManager#persist} operation.
	 * 
	 * <pre>
	 * EntityManagerHelper.beginTransaction();
	 * IReserveItemLabDAO.save(entity);
	 * EntityManagerHelper.commit();
	 * </pre>
	 * 
	 * @param entity
	 *            ReserveItemLab entity to persist
	 * @throws RuntimeException
	 *             when the operation fails
	 */
	public void save(ReserveItemLab entity);

	/**
	 * Delete a persistent ReserveItemLab entity. This operation must be
	 * performed within the a database transaction context for the entity's data
	 * to be permanently deleted from the persistence store, i.e., database.
	 * This method uses the
	 * {@link javax.persistence.EntityManager#remove(Object)
	 * EntityManager#delete} operation.
	 * 
	 * <pre>
	 * EntityManagerHelper.beginTransaction();
	 * IReserveItemLabDAO.delete(entity);
	 * EntityManagerHelper.commit();
	 * entity = null;
	 * </pre>
	 * 
	 * @param entity
	 *            ReserveItemLab entity to delete
	 * @throws RuntimeException
	 *             when the operation fails
	 */
	public void delete(ReserveItemLab entity);

	/**
	 * Persist a previously saved ReserveItemLab entity and return it or a copy
	 * of it to the sender. A copy of the ReserveItemLab entity parameter is
	 * returned when the JPA persistence mechanism has not previously been
	 * tracking the updated entity. This operation must be performed within the
	 * a database transaction context for the entity's data to be permanently
	 * saved to the persistence store, i.e., database. This method uses the
	 * {@link javax.persistence.EntityManager#merge(Object) EntityManager#merge}
	 * operation.
	 * 
	 * <pre>
	 * EntityManagerHelper.beginTransaction();
	 * entity = IReserveItemLabDAO.update(entity);
	 * EntityManagerHelper.commit();
	 * </pre>
	 * 
	 * @param entity
	 *            ReserveItemLab entity to update
	 * @return ReserveItemLab the persisted ReserveItemLab entity instance, may
	 *         not be the same
	 * @throws RuntimeException
	 *             if the operation fails
	 */
	public ReserveItemLab update(ReserveItemLab entity);

	public ReserveItemLab findById(ReserveItemLabId id);

	/**
	 * Find all ReserveItemLab entities with a specific property value.
	 * 
	 * @param propertyName
	 *            the name of the ReserveItemLab property to query
	 * @param value
	 *            the property value to match
	 * @return List<ReserveItemLab> found by query
	 */
	public List<ReserveItemLab> findByProperty(String propertyName, Object value);

	public List<ReserveItemLab> findByRemark(Object remark);

	public List<ReserveItemLab> findByColorTpc(Object colorTpc);

	public List<ReserveItemLab> findByColorCustomer(Object colorCustomer);

	public List<ReserveItemLab> findByDetail(Object detail);

	public List<ReserveItemLab> findByNoLab(Object noLab);

	public List<ReserveItemLab> findByCreateBy(Object createBy);

	/**
	 * Find all ReserveItemLab entities.
	 * 
	 * @return List<ReserveItemLab> all ReserveItemLab entities
	 */
	public List<ReserveItemLab> findAll();
}